Fork me on GitHub

try them all

题目

You have found a passwd file containing salted passwords. An unprotected configuration file has revealed a salt of 5948. The hashed password for the ‘admin’ user appears to be 81bdf501ef206ae7d3b92070196f7e98, try to brute force this password.

题目链接

http://www.shiyanbar.com/ctf/1981

题解

这题是考md5加salt,明文找一份比较全的字典去跑即可,如webshellpassword.txt,就跑出来

网上找的一个py脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# -*- coding:utf -*-
__author__='pcat@chamd5.org'
from hashlib import md5
def foo():
f=open('webshellpassword.txt','rb').readlines()
salt='5948'
m='81bdf501ef206ae7d3b92070196f7e98'
for line in f:
t=line.strip()+salt
t=md5(t).hexdigest()
if t==m:
print line.strip()
break
pass
if __name__ == '__main__':
foo()
print 'ok'

http://www.chamd5.org/

salt加密

​ 我们知道,如果直接对密码进行散列,那么黑客可以对通过获得这个密码散列值,然后通过查散列值字典(例如MD5密码破解网站),得到某用户的密码。

  加Salt可以一定程度上解决这一问题。所谓加Salt方法,就是加点“佐料”。其基本想法是这样的:当用户首次提供密码时(通常是注册时),由系统自动往这个密码里撒一些“佐料”,然后再散列。而当用户登录时,系统为用户提供的代码撒上同样的“佐料”,然后散列,再比较散列值,已确定密码是否正确。

  这里的“佐料”被称作“Salt值”,这个值是由系统随机生成的,并且只有系统知道。这样,即便两个用户使用了同一个密码,由于系统为它们生成的salt值不同,他们的散列值也是不同的。即便黑客可以通过自己的密码和自己生成的散列值来找具有特定密码的用户,但这个几率太小了(密码和salt值都得和黑客使用的一样才行)。

下面以PHP示例,讲解md5($pass.$salt)加密函数。

<?php
function hash($a) {
​ $salt=”Random_KUGBJVY”; //定义一个salt值,程序员规定下来的随机字符串
​ $b=$a.$salt; //把密码和salt连接
​ $b=md5($b); //执行MD5散列
​ return $b; //返回散列
}
?>

-------------本文结束感谢您的阅读-------------